//递归方式
void middleScanf(TreeNode* t)
{
    if(t == NULL) return ;

    middleScanf(t->left);
    cout << t->val << " ";
    middleScanf(t->right);
}

//非递归方式；
void InOrder2(BitTree T){
//二叉树中序遍历的非递归算法，算法需要借助一个栈
    InitStack(S);                   //初始化栈
    BitTree p=T;                    //p是遍历指针
    while( p || !IsEmpty(S) ){
        if(p){                      //根指针进栈，遍历左子树。
            Push(S,p);              //每遇到非空二叉树先向左走。
            p=p->lchild;
        }
        else{                       //根指针退栈，访问根节点，遍历右子树。
            Pop(S,p);               //退栈。
            visit(p);               //访问根节点。
            p=p->rchild;            //再向右子树走
        }
    }
}